Computer architectures generally include a plurality of separate devices such as processors, memories, and peripheral devices, interconnected by one or more buses. For example, a host system 100, such as a server, a workstation or a personal computer (PC), as shown in FIG. 1, may include at least a processor 102, a cache (high-speed static random-access-memory, RAM) 104, a bridge/memory controller 106, and a memory (high-speed dynamic RAM) 108. A local bus may provide a link between the processor 102, the cache 104, and the memory (high-speed dynamic RAM) 108. As opposed to the local bus, system buses may be used as an interconnect transportation mechanism to transport data between highly integrated peripheral devices, peripheral add-in boards, and audio and video subsystems. Examples of add-in boards include a standard network adapter 112 for providing an interface to a computer network N or other communications link, a small computer systems interface (SCSI) adapter 114 for supporting a plurality of storage devices 116 such as disk drives, tape drives, and compact disk read-only-memory (CD-ROM). Also included may be an audio subsystem 118 and a video (graphics) subsystem 120 for supporting audio and video presentations via a monitor 122 and speakers (not shown). Examples of system buses for transporting data between the bridge/memory controller 106, the standard network adapter 112, the SCSI adapter 114, the audio subsystem 118 and the video subsystem 120, include a Peripheral Component Interconnect (PCI) bus 110 for high speed applications.
The video subsystem 120 may include a video memory (high-speed dynamic RAM or specialized video RAM) for retaining graphics or character information for display, video registers, and a graphics (video) controller for controlling a visual display of video including animation, full-motion video, still images, and graphics. Some video subsystems 120 for use in a host system may capture individual screen images for presentations and desktop publishing applications. Unfortunately, none of these video subsystems may capture a screen image of a host system for network applications such as, for example, transmission to a remote system over a computer network for purposes of providing remote viewing, system diagnostics and system management. Moreover, neither the video memory nor the graphics controller in a video subsystem for use in a host system may be designed for access by multiple masters. The video subsystem assumes that only a single master (e.g., a host processor) will read and write to video memory to capture a screen image for video redirection from a display monitor, and that no other master will read or write to video memory. Consequently, any attempt to access video memory in a video subsystem for redirection while the host processor accesses such video memory will corrupt the video memory and disturb a screen image of a host system.
One approach to capture a screen image of a host system for transmission to a remote system over a computer network may be to remove the original video subsystem from the host system and incorporate the complete video subsystem including memory and controller into a typical network card. However, there may be two major disadvantages to this approach. The first disadvantage may be the added cost of the standard network card to support the video subsystem. The second disadvantage may be that the host system user is restricted to a particular graphics controller which is offered by a typical network card. Consequently, the host system user may be unable to take advantage of the rapid advances in latest graphics controller performances and capabilities.